@{
    ViewBag.Title = "在线base16编码解码";
    ViewBag.keywords = "Base16编码解码,Base16在线转换工具,在线base编码解码,base16在线";
    ViewBag.description = "Base16使用数字0-9和字母A-F共计16个ASCII可打印字符对任意字节数据进行编码。由于Base16使用两个ASCII字符去编码原数据中的一个字节数据，所以Base16编码是原数据量的两倍。正因如此，Base16编码更易被人类和计算机使用，它并不包含任何控制字符，是一个标准的十六进制字符串";
    var host = Appsettings.app("BaseFile:HostUrl");
}

<div class="layui-row">
    <div class="layui-elem-quote">
        <p>
            Base编码系列：
            <a href="/base16" style="color:blue">Base16</a>
            <a href="/base32" style="color:blue">Base32</a>
            <a href="/base58" style="color:blue">Base58</a>
            <a href="/base62" style="color:blue">Base62</a>
            <a href="/base64" style="color:blue">Base64</a>
            <a href="/base91" style="color:blue">Base91</a>
        </p>
        <p>Base16编码使用16个ASCII可打印字符（数字0-9和字母A-F）对任意字节数据进行编码。Base16先获取输入字符串每个字节的二进制值（不足8比特在高位补0），然后将其串联进来，再按照4比特一组进行切分，将每组二进制数分别转换成十进制，在下述表格中找到对应的编码串接起来就是Base16编码。可以看到8比特数据按照4比特切分刚好是两组，所以Base16不可能用到填充符号“=”。</p>
        <p>Base16编码后的数据量是原数据的两倍：1000比特数据需要250个字符（即 250*8=2000 比特）。换句话说：Base16使用两个ASCII字符去编码原数据中的一个字节数据。</p>
    </div>
</div>

<div class="layui-row layui-form layui-form-pane">
    <div class="layui-form-item layui-form-text">
        <label class="layui-form-label">内容：</label>
        <div class="layui-input-block">
            <textarea placeholder="请输入内容" id="content" name="content" rows="8" lay-verify="required" autocomplete="off" class="layui-textarea">www.ruovea.com</textarea>
        </div>
    </div>
    <div class="layui-form-item base16">
        <a class="layui-btn enc">加密</a>
        <a class="layui-btn layui-btn-normal dec">解密</a>
        <a class="layui-btn layui-btn-danger cle">清空</a>
        <a class="layui-btn layui-btn-primary copy">复制结果</a>
    </div>
    <div class="layui-form-item layui-form-text">
        <label class="layui-form-label">输出：</label>
        <div class="layui-input-block">
            <textarea placeholder="输出内容" id="outtxt" name="outtxt" rows="8" autocomplete="off" class="layui-textarea"></textarea>
        </div>
    </div>
</div>

<div class="layui-row">
    <table class="layui-table">
        <caption>
            Base16 编码表
        </caption>
        <tbody>
            <tr> <th>值</th> <th>编码</th> <th>值</th> <th>编码</th> </tr>
            <tr> <td>0</td> <td>0</td> <td>8</td> <td>8</td> </tr>
            <tr> <td>1</td> <td>1</td> <td>9</td> <td>9</td> </tr>
            <tr> <td>2</td> <td>2</td> <td>10</td> <td>A</td> </tr>
            <tr> <td>3</td> <td>3</td> <td>11</td> <td>B</td> </tr>
            <tr> <td>4</td> <td>4</td> <td>12</td> <td>C</td> </tr>
            <tr> <td>5</td> <td>5</td> <td>13</td> <td>D</td> </tr>
            <tr> <td>6</td> <td>6</td> <td>14</td> <td>E</td> </tr>
            <tr> <td>7</td> <td>7</td> <td>15</td> <td>F</td> </tr>
        </tbody>
    </table>
    <div class="layui-elem-quote">
        <p>Base16编码是一个标准的十六进制字符串（注意是字符串而不是数值），更易被人类和计算机使用，因为它并不包含任何控制字符，以及Base64和Base32中的“=”符号。</p>
        <p>输入的非ASCII字符，使用UTF-8字符集。</p>

    </div>
</div>
@section Scripts {
<script src="@host/lib/converter.min.js"></script>
<script>
    layui.config({ base: '@host/js/' }).use('common',function(){ $=layui.jquery;
     let area_input = document.getElementById('content');
     let area_output = document.getElementById('outtxt');

     $(".base16 .enc").bind("click", function () {
         try {
             var inptxt = area_input.value;
             if (inptxt === undefined || inptxt === '' || inptxt === null) { layer.msg("内容不能为空.", { icon: 2 }); return; }
             area_output.value = encode(inptxt, "base16");
         } catch (err) {
             console.log(err)
             layer.msg("加密失败", { icon: 2 });
         }
     });

     $(".base16 .dec").bind("click", function () {
         try {
             var inptxt = area_input.value;
             if (inptxt === undefined || inptxt === '' || inptxt === null) { layer.msg("内容不能为空.", { icon: 2 }); return; } area_output.value = decode(inptxt, "base16");
         } catch (err) {
             console.log(err)
             layer.msg("解密失败", { icon: 2 });
         }
     });
     });
</script>
}